package com.sodimac.v2s.commands
{
	import com.adobe.cairngorm.commands.ICommand;
	import com.adobe.cairngorm.control.CairngormEvent;
	import com.sodimac.util.alerts.alert;
	import com.sodimac.util.commons.Session;
	import com.sodimac.util.commons.UtilString;
	import com.sodimac.util.commons.UtilXml;
	import com.sodimac.v2s.business.UploadDelegate;
	import com.sodimac.v2s.events.uploadPiEvent;
	import com.sodimac.v2s.model.ComprasModelLocator;
	
	import mx.collections.ArrayCollection;
	import mx.rpc.IResponder;

	public class uploadPiCommand implements ICommand, IResponder
	{
		private var modelo:ComprasModelLocator = ComprasModelLocator.getInstance();
		private var sesion:Session = new Session();
		private var metodo:String ="";
		
		public function execute(event:CairngormEvent):void
		{
			var delegate:UploadDelegate = new UploadDelegate(this);
			var encEvt:uploadPiEvent = uploadPiEvent(event);
			
			metodo = encEvt.metodo;
			
			if (UtilString.equalsIgnoreCase(metodo, "paisesConDocumento"))
			{
				delegate.ConsultaPaisesConDoc(modelo.cabecera,encEvt.idPedidoCorp);
			}
			
		}
		
		
		
        public function result(obj: Object): void
        {            
			var xmlList:XMLList;
			var xml:XML = new XML(obj.result);
			xml = UtilXml.removeNamespacesFromXML(xml);
			xmlList = xml.children();
			
			var result:Number = Number(xmlList.cabecera.@id);
			var glosa:String =  xmlList.cabecera.@glosa;
			trace("WS ProformaInvoicePorPais response id=" + result);

	  	      switch (result){
	  	      case 0:   //Ok

						if (UtilString.equalsIgnoreCase(metodo, "paisesConDocumento"))
						{
							procesaPaisesDoc(xmlList.payload);						
							
						}
						else if (UtilString.equalsIgnoreCase(metodo, "UploadPI"))
						{
	  	      				alert.success("Archivo subido exitosamente.");

						}
	  	      			break;
	  	      			
	  	      case 1:   //Error
	  	      			alert.error("Ha ocurrido un error:\n\n"+  glosa);
	  	      			break;
	  	      			
	  	      default:  //reintentar
	  	      	  	     alert.info("Problemas con respuesta del servicio, " + 
									"favor reintente mas tarde.\n\n"+ glosa);
	  	      			break;                  	      						
	  	      }


        }
                
        public function fault(obj: Object): void
        {
        	alert.error("Ha Ocurrido un error al subir el archivo.");
        }	
		
			
		private function procesaPaisesDoc(productos:XMLList):void 
		{
			var paisesArr:Array = new Array();
			for each(var producto:XML in productos.paises.pais)			
			{
				paisesArr.push(String(producto));
			}
			modelo.paisesDocData = paisesArr;
		}
		
	}	
}